/**
 * @author Dragon Slayers
 */
public interface FileSet {

	/**
	 * Checks that all the files that are passed as command line arguments
	 * are valid input and output files.
	 * 
	 * ? If the report-output file is valid, all errors are sent to this file.
	 * ? If the report-output file is not valid, errors are sent to the console.
	 * 
	 * @throws IllegalArgumentException, SecurityException
	 * 
	 * @return true iff primary-input file, auxiliary-input file, result-output
	 * file, and report-output file are valid. Otherwise return false.
	 */
	public abstract boolean checkFiles();
	
	/**
	 * Processes the input files and creates the output files.
	 *  
	 * @throws FileNotFoundException, IOException
	 * 
	 * @ensures An integer number, n, is provided from reading the auxiliary-input file.
	 * 
	 * The result-output file will contain only the first n lines that were read
	 * from the primary-input file. Only the first 80 printable bytes of each of 
	 * the first n lines will be printed the the result-output file. The rest of 
	 * the line will not appear in the result-output file. 
	 * 
	 * The report-output file will report:
	 *  1. how many lines were produced in the result-output file,
	 *  2. how many lines were in the primary-input file, and
	 *  3. the line numbers of the primary-input file which had more than 80 printable
	 * 		bytes
	 * 
	 * The primary-input file and the auxiliary input file remain unchanged.
	 */
	public abstract void processFiles();

}